package fiuba.algo3;

import fiuba.algo3.rango.Policia;
import fiuba.algo3.lugar.LugarRutaDeEscape;
import fiuba.algo3.lugar.LugarDelSospechoso;
import fiuba.algo3.lugar.LugarBalazo;
import fiuba.algo3.lugar.LugarFueraRutaDeEscape;
import fiuba.algo3.lugar.LugarCuchillazo;
import fiuba.algo3.mundo.Pais;

public class Jugador {
	
	private int cantidadArrestos;
	private String nombre;
	private Policia policia;
	private Pais paisUbicacion;
	
	public Jugador(Pais pais){
		this.paisUbicacion = pais;
		this.nombre = "";
		this.cantidadArrestos = 0;
		this.policia = new Policia(this.cantidadArrestos);
	}
	
	public Jugador(Pais pais, int cantidadArrestos){
		this.paisUbicacion = pais;
		this.cantidadArrestos = cantidadArrestos;
		this.policia = new Policia(cantidadArrestos);
	}
	
	public Jugador() {
		this.cantidadArrestos = 0;
		this.policia = new Policia(this.cantidadArrestos);
	}

	public void aumentarCantidadDeArrestos()
	{
		cantidadArrestos = cantidadArrestos+1;
		chequearRango();
	}
	
	private void chequearRango() {
		
		if (cantidadArrestos == 5)
			policia.setearRangoDetective();
		else if (cantidadArrestos == 10)
			policia.setearRangoInvestigador();
		else if (cantidadArrestos == 20)
			policia.setearRangoSargento();
		
	}

	public int irHasta(Pais paisDestino){
		
		int tiempo = this.policia.viajarDesdeHasta(this.paisUbicacion, paisDestino);
		this.setearPaisUbicacion(paisDestino);
		return tiempo;
	}

	private void setearPaisUbicacion(Pais paisDestino) {
		this.paisUbicacion = paisDestino;		
	}
	
	public String entrarEn(LugarCuchillazo lugar){
		return (this.policia).entrarEn(lugar);
	}
	
	public String entrarEn(LugarBalazo lugar){
		return (this.policia).entrarEn(lugar);
	}
	
	public String entrarEn(LugarFueraRutaDeEscape lugar){
		return (this.policia).entrarEn(lugar);
	}
	
	public String entrarEn(LugarRutaDeEscape lugar){
		return (this.policia).entrarEn(lugar);
	}
	
	public String entrarEn(LugarDelSospechoso lugar) {
		return (this.policia).entrarEn(lugar);
	}
	
	public Pais obtenerUbicacion(){
		return this.paisUbicacion;
	}

	public void setearNombre(String nombre) {
		this.nombre = nombre;
		
	}

	public String obtenerNombre() {
		
		return this.nombre;
	}

	public int obtenerHorasDeSuenio() {
		return 8;
	}
	
	public void setearPaisInicial(Pais pais) {
		this.paisUbicacion = pais;
	}

	public String obtenerTextoRango() {
		return policia.obtenerTextoRango();
	}

	public int obtenerCantidadArrestos() {
		return cantidadArrestos;
	}
}
